package com.ybwh.springboot2.activiti.listener;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.bpmn.parser.BpmnParse;
import org.activiti.engine.impl.bpmn.parser.handler.UserTaskParseHandler;
import org.activiti.engine.impl.task.TaskDefinition;

import java.util.List;

/**
 *
 * 解析每个userTask时，为其添加监听器，这样我们就没必要在bpmn图上手动添加了。不仅省时省力，而且方便统一管理。
 *
 */
@AllArgsConstructor
public class MyUserTaskParseHandler extends UserTaskParseHandler {

	@Getter
    private List<TaskListener> taskListenerList;

    @Override
    protected void executeParse(BpmnParse bpmnParse, UserTask userTask) {
        //由父类完成元素解析
        super.executeParse(bpmnParse, userTask);


        for (TaskListener taskListener : taskListenerList) {
			//为所有节点添加TaskListener
            TaskDefinition taskDefinition = (TaskDefinition) bpmnParse.getCurrentActivity().getProperty(UserTaskParseHandler.PROPERTY_TASK_DEFINITION);
            taskDefinition.addTaskListener(TaskListener.EVENTNAME_CREATE, taskListener);
        }
    }


}